.. _cmlPmSxIsDone: cmlPmSxIsDone ================================ -------------------------------- SYNOPSYS ````````````` .. code-block:: none VT_I4 cmlPmSxIsDone ([in] VT_I4 BoardID, [in] VT_I4 NodeId, [in] VT_I4 Channel, [out] VT_PI4 IsDone ) DESCRIPTION ````````````` - cmlPmSxIsDone() 함수는 ë‹¨ì¼ ì¶•ì— ëŒ€í•˜ì—¬ 모션 완료를 확ì¸í•©ë‹ˆë‹¤. \ - ì´ í•¨ìˆ˜ì˜ ì‚¬ìš©ê³¼ í˜¸ì¶œì— ìžˆì–´, ì œê³µëœ ãˆœì»¤ë¯¸ì¡°ì•„ì˜ í•¨ìˆ˜ í—¤ë” Visual Basic ì—서는 í•¨ìˆ˜ì˜ ì²¨ë‘ì–´ cml ê°€ 붙지 않습니다. PARAMETER ````````````` â–¶ BoardID : 사용ìžê°€ ì„¤ì •í•œ 디바ì´ìŠ¤(ë³´ë“œ) ID. â–¶ NodeId : 사용ìžê°€ ì œì–´í•˜ê³ ìž í•˜ëŠ” 노드 번호. â–¶ Channel : 축 번호. 통합 축으로 관리ë˜ëŠ” 축 번호를 ì˜ë¯¸í•˜ë©°, ìƒìˆ˜ 값으로 0 (Zero Based) ì´ìƒ, 최대 통합 축 개수 - 1 ì´í•˜ì˜ ê°’ì„ ì¶• 번호로 ì„¤ì •í• ìˆ˜ 있습니다. â–¶ IsDone : ì´ ë§¤ê°œ 변수를 통해 모션 ìž‘ì—…ì´ ì™„ë£Œë˜ì—ˆëŠ”지를 íŒë‹¨í• 수 있습니다. .. csv-table:: :widths: 10 90 :header-rows: 1 :stub-columns: 0 Value, Meaning 0 (cmlFALSE), ëª¨ì…˜ìž‘ì—…ì´ ì™„ë£Œë˜ì§€ ì•ŠìŒ. 1 (cmlTRUE), ëª¨ì…˜ìž‘ì—…ì´ ì™„ë£Œ ë¨. REFERENCE ``````````````` - INP ìž…ë ¥ì‹ í˜¸ê°€ Enable ë¡œ ì„¤ì •ë˜ì—ˆìœ¼ë©´ Command 펄스 ì¶œë ¥ì´ ì™„ë£Œë˜ì–´ë„ INP ìž…ë ¥ì´ ON ì´ ë˜ê¸° ì „ê¹Œì§€ëŠ” ëª¨ì…˜ì´ ì™„ë£Œë˜ì§€ ì•Šì€ ê²ƒìœ¼ë¡œ 간주ë˜ì–´ 반환ë˜ì§€ 않습니다. \ - ìŠ¤í… ë“œë¼ì´ë¸Œë¥¼ 사용 ì¤‘ì¸ ê³ ê°ë‹˜ë“¤ê»˜ì„œëŠ” 다ìŒì„ 참조해 주ì‹ì‹œì˜¤. ìŠ¤í… ë“œë¼ì´ë¸ŒëŠ” INP ì¶œë ¥ì´ ì—†ëŠ” 경우가 ì¼ë°˜ì ì¸ë°, ê³ ê°ë‹˜ì˜ 부주ì˜ë‚˜ ìž˜ëª»ëœ ì„¤ì •ìœ¼ë¡œ INP ìž…ë ¥ì— ëŒ€í•œ ì„¤ì •ì´ Enable ë¡œ ë˜ì–´ ìžˆì„ ê²½ìš° INP ìž…ë ¥ì´ ìŠ¤í… ë“œë¼ì´ë¸Œë¥¼ 통해 ë°œìƒí•˜ì§€ 않는 ì´ìœ ë•Œë¬¸ì— ëª¨ì…˜ 완료가 ë˜ì§€ 않는 경우가 ë°œìƒí• 수 있습니다. ê³ ê° ì—¬ëŸ¬ë¶„ë“¤ê»˜ì„œëŠ” ìŠ¤í… ë“œë¼ì´ë¸Œ ì‚¬ìš©ì‹œì— ì´ì ì„ ì£¼ì˜í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤. \ - 서보 ë“œë¼ì´ë¸Œì˜ LSP , LSN ì‹ í˜¸ë¥¼ 사용 ì¤‘ì¸ ê³ ê°ë‹˜ê»˜ì„œëŠ” 다ìŒì„ 참조해 주ì‹ì‹œì˜¤. 서보드ë¼ì´ë¸Œì˜ ìž…ë ¥ ì‹ í˜¸ 중 í•˜ë‚˜ì¸ EL(End of Limit) ì‹ í˜¸ëŠ” ì €í¬ ãˆœ 커미조아 모션 컨트롤러ë¿ë§Œ ì•„ë‹ˆë¼ ì„œë³´ë“œë¼ì´ë¸Œì—ë„ ì „ë‹¬ ë 수 있ë„ë¡ ì„¤ì •í• ìˆ˜ 있습니다. 통ìƒì 으로 LSP ì‹ í˜¸ì™€ LSN ì‹ í˜¸ë¡œ 불리어 지는 ì´ ì‹ í˜¸ëŠ” ì‹¤ì œ 기구물ì—ì„œ ì–‘ì˜ ë°©í–¥(Positive Direction) í˜¹ì€ ìŒì˜ ë°©í–¥(Negative Direction) ì— ìž¥ì°©ë˜ì–´ 있는 EL(End of Limit) ì‹ í˜¸ë¥¼ 서보 ë“œë¼ì´ë¸Œ ì¸¡ì— ì „ë‹¬í•˜ê¸° 위한 ìš©ë„ë¡œ 사용ë©ë‹ˆë‹¤. \ - 그러나, 모션 소프트웨어ì—ì„œ INP ì„¤ì •ì´ ë˜ì–´ 있는 경우 EL ì‹ í˜¸ê°€ 검출 ëœ í›„ì— ì¼ë¶€ 서보 ë“œë¼ì´ë¸Œì—서는 진행 ë°©í–¥ì—ì„œ ì •ì§€í•œ 후 ë” ì´ìƒ 움ì§ì´ì§€ 않는 ìƒí™©ì´ ë°œìƒí•˜ë©°, ì´ ìƒí™©ì—ì„œ INP ì‹ í˜¸ê°€ ì¶œë ¥ë˜ì§€ ì•Šì•„, 모션 ì´ì†¡ì´ 완료ë˜ì§€ ëª»í•˜ê³ , 명시ì 으로 STOP ëª…ë ¹ì„ í†µí•´ ê°•ì œì 으로 모션 종료가 ë˜ëŠ” 현ìƒì´ ë°œìƒí• 수 있습니다. ì´ í˜„ìƒì€ EL 모드를 통해 ì›ì 복귀를 하는 ìƒí™©ì—ì„œë„ ë°œìƒí• 수 있습니다. \ - ë”°ë¼ì„œ, ì´ëŸ¬í•œ 경우ì—는 반드시 ì›ì 복귀나 EL ê²€ì¶œì‹œì— ì¸í„°ëŸ½íŠ¸ ì´ë²¤íŠ¸ë‚˜ 타ì´ë¨¸ë¥¼ 통해 INP 를 무기한 대기하는 현ìƒì— 대해서 ì ì ˆížˆ 대처하시거나 INP ì‹ í˜¸ ì‚¬ìš©ì„ ë°°ì œ 해야합니다. .. note:: 윈ë„ìš° ì´ë²¤íŠ¸ë¼ëŠ” ê²ƒì€ ë¬´ì—‡ìž…ë‹ˆê¹Œ? 윈ë„ìš° ìš´ì˜ì²´ì œëŠ” Event Driven í˜¹ì€ Message Driven ë°©ì‹ì˜ 구조로 ë˜ì–´ 있습니다. ê° ì‘ìš©í”„ë¡œê·¸ëž¨ì€ ë©”ì‹œì§€ í(Queue)를 ê°€ì§€ê³ ìžˆìœ¼ë©°, ì •í™•ížˆ ë§í•˜ë©´, 메시지를 사용해 ì´ë²¤íŠ¸ë¥¼ 통지하는 ë°©ì‹ìœ¼ë¡œ 설계ë˜ì–´ 있습니다. 윈ë„ìš° 메시지를 처리한다는 ê²ƒì€ ë©”ì‹œì§€ íì—ì„œ 메시지를 하나씩 꺼내서 윈ë„ìš° í”„ë¡œì‹œì €ì— ì „ì†¡í•œë‹¤ëŠ” ê²ƒì„ ì˜ë¯¸í•˜ë©°, ì´ê²ƒì€ ê·¸ í–‰ì„ ì§€ê°€ ë˜ëŠ” 윈ë„ìš°ì— ì „ì†¡ë˜ì–´ 처리ë©ë‹ˆë‹¤. RETURN VALUE ````````````` +------------+-----------+ | Value | Meaning | +============+===========+ | ìŒìˆ˜ | 수행 실패 | +------------+-----------+ | ERR_NONE | 수행 성공 | +------------+-----------+ EXAMPLE ````````` .. code-block:: c++ :linenos: :emphasize-lines: 5 C/C++ #include “ComiMLink2_SDK.h†#include “ComiMLink2_SDK_Def.h†long BoardID = 0; long nChannel = 0; //0번 축으로 ì„¤ì •í•©ë‹ˆë‹¤. //0번 ì¶•ì„ í˜„ìž¬ 위치ì—ì„œ 10000펄스 ë§Œí¼ ì´ì†¡í•©ë‹ˆë‹¤. cmlPmSxMoveStart(BoardID, 0, nChannel, 10000 ); long nIsDone = cmlFALSE; while( !nIsDone ) { //0번 ì¶•ì˜ ëª¨ì…˜ 완료 여부를 íŒë‹¨í•©ë‹ˆë‹¤. cmlPmSxIsDone(BoardID, 0, nChannel, &nIsDone ); } SEE ALSO ``````````` .. seealso:: :ref:`cmlPmSxWaitDone`